const moment = require("moment")

// pages/play/play.js
const innerAudioContext =wx.createInnerAudioContext({
  useWebAudioImplement: false })  //创建音频播放对象
Page({

  /**
   * 页面的初始数据
   */
  data: {
    musiclist:[],//歌曲列表
    nowIndex:"",//下标
    music:{},//当前歌曲数据
    musicid:'',//当前歌曲的id
    listid:[],//所有歌曲id
    songurl:"",//当前歌曲的url地址
   // innerAudioContext:"",//存储当前音乐媒体对象
    btn:true,//歌曲播放暂停
    modebtn:true,//歌曲播放模式
    playbtn:'/images/Player, pause.png',//暂停播放按钮
    lyrics:'',//歌词
    musicMode:'/images/音乐播放图标.png',//歌曲播放模式图标
    lrcdata:[],//歌词整合数据
    cipanzhuangdon:'animation: imgmove 20s linear infinite;',//磁盘转动
    action:{
      "method":"play"
    },
    index:-1,//当前播放歌词的下标
    top:0,//歌词滚动
    playTime:0,//当前播放时间
    totalTime:0,//总时长
    playTime1:0,//歌曲当前进度
    totalTime1:0//歌曲总进度条
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const eventChannel = this.getOpenerEventChannel()
    // 监听 acceptDataFromOpenerPage 事件，获取上一页面通过 eventChannel 传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', (data)=>{
      console.log('我是歌曲数据',data)
      const nowIndex=data.data.nowIndex
      const musiclist=data.data.musicdata
      const music=musiclist[nowIndex]
      var list=[]
      for(let i=0;i<musiclist.length;i++){
        list[i]=musiclist[i].id
      }
      this.setData({
         nowIndex:nowIndex,
         musiclist:musiclist,
         musicid:music.id,
         listid:list
      })
    }) 
    //调用歌曲详情
    this.getMusicDetail()
    //播放歌曲
    this.getSong()
    //获取歌词
    this.getlrc()
    this.timechange()
  },
  //歌曲详情
 getMusicDetail:function(){
   wx.request({
     url: 'http://localhost:3000/song/detail?ids='+this.data.musicid,
     success:(res)=>{
       this.setData({
         music:res.data.songs[0]
       })
     }
   })
 },
 //获取歌曲url播放歌曲
  getSong:function(){
    wx.request({
      url:'http://localhost:3000/song/url?id='+this.data.musicid,
         success: (result) => {
           this.setData({
             songurl:result.data.data[0].url
           })
           this.setData({
            action:{
              method:"play"
            }
          })
          // innerAudioContext.src = result.data.data[0].url
          //innerAudioContext.play() // 播放
         },
    })
  },
  //监听音乐播放
timechange:function(e){
  if(e){
  var playTime=e.detail.currentTime
  var playTime1=moment(e.detail.currentTime*1000).format("mm:ss")
  var totalTime=e.detail.duration
  var totalTime1=moment(e.detail.duration*1000).format("mm:ss")

  this.setData({
    playTime:playTime1,
    playTime1:playTime,
    totalTime:totalTime1,
    totalTime1:totalTime
  })
}
   //歌词时间
   var lrcList=this.data.lrcdata
   //遍历二维数组歌词
   for(var i=0;i<lrcList.length-1;i++){
     if(playTime===totalTime) return
     if((lrcList[i][0]<=playTime&&playTime<lrcList[i+1][0])){
      this.setData({
        index:i
      })
   }
  }
  if(this.data.index-5>0){
    this.setData({
      top:(this.data.index-5)*30
    })
  }
},
//当歌曲播放完毕
end:function(){
  if(!this.data.modebtn){
   this.setData({
     musicid:this.data.musicid
   })
   //刷新播放
   this.setData({
     action:{
       method:'play'
     }
   })
  }else{
    this.nextMusic()
  }
},
  //获取歌词
  getlrc:function(){
  wx.request({
    url: 'http://localhost:3000/lyric?id='+this.data.musicid,
    success: (result) => {
      this.setData({
        lyrics:result.data.lrc.lyric
      })
      this.setlrcshow(this.data.lyrics)
    },
  })
  },
   //处理歌词
   setlrcshow:function(lrc){ 
     let lrcdata=[]
     const lrclist=lrc.split("\n")
     //分离时间和歌词
     const re=/\[\d{2}:\d{2}\.\d{2,3}\]/
     lrclist.forEach(item=>{
       let itemdate=item.match(re)
       //剔除空的时间
       if(itemdate){
         itemdate=itemdate[0]
         //拆分中括号
         itemdate=itemdate.slice(1,-1)
         //00：20.090转换成有运算意义的秒
         const timelist=itemdate.split(":")
         const time0=timelist[0]
         const time1=timelist[1]
         //整理拿到最终的时间值
         const time=parseFloat(time0)*60+parseFloat(time1)        
         //找歌词
         const lrcstr=item.replace(re,"")
         //给歌词和时间匹配整合
         lrcdata.push([time ,lrcstr])
       }
     })
      this.setData({
        lrcdata:lrcdata
      })
   },
   //暂停歌曲
  pauseSong:function(){
    if(this.data.btn){
    this.setData({
      btn:!this.data.btn,
      playbtn:'/images/Player, play.png',
      cipanzhuangdon:'animation:imgmove 20s linear infinite;animation-play-state:paused;',
      action:{"method":"pause"}
    })
    }else{
      this.setData({
        btn:!this.data.btn,
        playbtn:'/images/Player, pause.png',
        cipanzhuangdon:"animation:imgmove 20s linear infinite;",
        action:{"method":"play"}
      })
    }
  },
  //改变播放模式
  modeChange:function(){
    if(this.data.modebtn){
   this.setData({
     musicMode:'/images/循环播放.png',
     modebtn:!this.data.modebtn
   })
  }else{
    this.setData({
      musicMode:'/images/音乐播放图标.png',
      modebtn:!this.data.modebtn
    })
  }
  },
  //拖动进度条
  sliderchange:function(e){
    var v=e.detail.value
   //修改左侧播放时长
    this.setData({
      playTime1:v
    })
 //修改当前播放时间
    this.setData({
      action:{
        method:"setCurrentTime",
        data:v
    }
    })
    //更新播放状态
    if(this.data.btn){
    this.setData({
      action:{
        method:"play"
    }
    })
  }
  },
  //下一首
  nextMusic:function(){
    var id=this.data.musicid
    var listid=this.data.listid
    //下标
    var index=-1
    for(var i=0;i<listid.length;i++){
      if(id==listid[i]){
        index=i
        break
      }
    }
    if(index==listid.length-1){
      this.setData({
        musicid:listid[0],
      })
    }else{
      this.setData({
        musicid:listid[index+1],
      })
    }
    this.getSong()
    this.getlrc()
    this.getMusicDetail()
  },
  //上一首
  provMusic:function(){
    var id=this.data.musicid
    var listid=this.data.listid
    //下标
    var index=-1
    for(var i=0;i<listid.length;i++){
      if(id==listid[i]){
        index=i
        break
      }
    }
    if(index==0){
      this.setData({
        musicid:listid[listid.length-1],
      })
    }else{
      this.setData({
        musicid:listid[index-1],
      })
    }
    this.getSong()
    this.getlrc()
    this.getMusicDetail()
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
          
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  //  this.data.innerAudioContext.pause()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})